package date;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * Date Utils
 *
 */
public class DateUtils {

	/**
	 * 英文简写（默认）如：2010-12-01
	 */
	public static String FORMAT_SHORT = "yyyy-MM-dd";
	
	/**
	 * 英文全称  如：2010-12-01 23:15:06
	 */
	public static String FORMAT_LONG = "yyyy-MM-dd HH:mm:ss";
	
	/**
	 * 精确到毫秒的完整时间    如：yyyy-MM-dd HH:mm:ss.S
	 */
	public static String FORMAT_FULL = "yyyy-MM-dd HH:mm:ss.S";
	
	/**
	 * 中文简写  如：2010年12月01日
	 */
	public static String FORMAT_SHORT_CN = "yyyy年MM月dd";
	
	/**
	 * 中文全称  如：2010年12月01日  23时15分06秒
	 */
	public static String FORMAT_LONG_CN = "yyyy年MM月dd日  HH时mm分ss秒";
	
	/**
	 * 精确到毫秒的完整中文时间
	 */
	public static String FORMAT_FULL_CN = "yyyy年MM月dd日  HH时mm分ss秒SSS毫秒";

/*
	// 多线程并发安全问题
	private final static SimpleDateFormat SDF = new SimpleDateFormat(FORMAT_LONG);

	public static Date parse1 (String dateStr) throws ParseException {
		return SDF.parse(dateStr);
	}
*/


	public static Date parse (String dateStr) throws ParseException {
		SimpleDateFormat df = new SimpleDateFormat(FORMAT_LONG);
		return df.parse(dateStr);
	}


	/**
	 * 获得默认的 date pattern
	 */
	public static String getDatePattern() {
		return FORMAT_LONG;
	}
	
	/**
	 * 使用用户格式格式化日期
	 * @param date 日期
	 * @param pattern 日期格式
	 * @return
	 */
	public static String getDateStr(Date date, String pattern) {
		String returnValue = "";
		if (date != null) {
			SimpleDateFormat df = new SimpleDateFormat(pattern);
			returnValue = df.format(date);
		}
		return returnValue;
	}
	
	/**
	 * 使用预设格式格式化日期     "yyyy-MM-dd HH:mm:ss";
	 * @param date
	 * @return
	 */
	public static String getDateStr(Date date) {
		return getDateStr(date, getDatePattern());
	}

	/**
	 * 根据预设格式返回当前日期
	 * @return
	 */
	public static String getCurrentDateStr() {
		return getDateStr(new Date());
	}
	
	/**
	 * 根据用户格式返回当前日期
	 * @param format
	 * @return
	 */
	public static String getCurrentDateStr(String format) {
		return getDateStr(new Date(), format);
	}

	/**
	 * 获取日期年份
	 * @param date 日期
	 * @return
	 */
	public static String getYear(Date date, int length) {
		return getDateStr(date).substring(0, length);
	}
	
	/**
	 * 获取日期年份
	 *
	 */
	public static String getCurrentYear(int beginIndex, int endIndex) {
		return getCurrentDateStr().substring(beginIndex, endIndex);
	}

}

